package com.vhans.db.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.vhans.core.domain.CFriend;
import com.vhans.db.model.dto.ConditionDTO;
import com.vhans.db.model.dto.friend.FriendDTO;
import com.vhans.db.model.vo.friend.FriendInfoVO;
import com.vhans.db.model.vo.friend.FriendListVO;
import com.vhans.db.model.vo.friend.FriendVO;
import com.vhans.db.model.vo.friend.SingleRecentConversationResultVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 好友Mapper接口
 *
 * @author vhans
 * @date 2023-05-21
 */
@Repository
public interface CFriendMapper extends BaseMapper<CFriend> {

    /**
     * 查询好友列表(全部)
     *
     * @param condition 查询条件
     * @return 好友集合
     */
    List<FriendVO> selectFriendVOList(@Param("condition") ConditionDTO condition);

    /**
     * 查询用户的好友列表
     *
     * @param userId 用户id
     * @return 好友集合
     */
    List<FriendListVO> selectMFriendVOListByUserId(@Param("userId") Integer userId);

    /**
     * 查询好友是用户的好友列表
     *
     * @param userId 用户id
     * @return 好友集合
     */
    List<FriendListVO> selectYFriendVOListByUserId(@Param("userId") Integer userId);

    /**
     * 通过主键查询好友信息
     *
     * @param id 好友ID
     * @return 结果
     */
    FriendInfoVO selectFriendInfoById(Integer id);

    /**
     * 查询最近与好友的会话
     *
     * @param friend 查询条件
     * @return 结果
     */
    List<SingleRecentConversationResultVo> selectRecentConversation(@Param("friend") FriendDTO friend);

}
